package lagou.mode3;
/*
* 使用集合实现斗地主游戏的部分功能。
* */
import java.util.*;

public class Homework5 {
    public static void main(String[] args) {
        Map<Integer,String> m1=new HashMap();
        List<String> t1=new ArrayList<>();   //花色
        List<Integer> t2=new ArrayList<>();  //用于容纳提取出来的key值

        //创建三个玩家对应的集合
        List<Integer> user1=new ArrayList<>();
        List<Integer> user2=new ArrayList<>();
        List<Integer> user3=new ArrayList<>();

        t1.add("红桃");
        t1.add("方块");
        t1.add("黑桃");
        t1.add("梅花");

        //生成54张扑克牌
        m1.put(0,"大王");
        m1.put(1,"小王");
        int key=2;
        for(int i=2;i<15;i++){
                switch (i) {
                    case 2:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"2");
                            key++;
                        }
                        break;
                    case 3:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"A");
                            key++;
                        }
                        break;
                    case 4:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"K");
                            key++;
                        }
                        break;
                    case 5:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"Q");
                            key++;
                        }
                        break;
                    case 6:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"J");
                            key++;
                        }
                        break;
                    case 7:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"10");
                            key++;
                        }
                        break;
                    case 8:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"9");
                            key++;
                        }
                        break;
                    case 9:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"8");
                            key++;
                        }
                        break;
                    case 10:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"7");
                            key++;
                        }
                        break;
                    case 11:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"6");
                            key++;
                        }
                        break;
                    case 12:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"5");
                            key++;
                        }
                        break;
                    case 13:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"4");
                            key++;
                        }
                        break;
                    case 14:
                        for(int j=0;j<4;j++){
                            m1.put(key,t1.get(j)+"3");
                            key++;
                        }
                        break;
                }

        }
        System.out.println(m1);

        //拆出key值到t2中
        for (Map.Entry<Integer,String> en:m1.entrySet()) {
            t2.add(en.getKey());
        }

        //打乱牌的顺序
        Collections.shuffle((List<?>) t2);
        System.out.println(t2);

        //三个玩家交替摸牌
        for(int i=0;i<18;i++){
            user1.add(t2.get(3*i));
            user2.add(t2.get((3*i)+1));
            user3.add(t2.get((3*i)+2));
        }

        //打印三个玩家的牌序号
        System.out.println(user1);
        System.out.println(user2);
        System.out.println(user3);

        //获取三个玩家的牌内容
        System.out.println("第一个玩家的牌为：");
        for(int i=0;i<18;i++){
            System.out.println(m1.get(user1.get(i)));
        }
        System.out.println("第二个玩家的牌为：");
        for(int i=0;i<18;i++){
            System.out.println(m1.get(user2.get(i)));
        }
        System.out.println("第三个玩家的牌为：");
        for(int i=0;i<18;i++){
            System.out.println(m1.get(user3.get(i)));
        }

        //获取三个底牌的内容
        System.out.println(m1.get(t2.get(51)));
        System.out.println(m1.get(t2.get(52)));
        System.out.println(m1.get(t2.get(53)));

        //按序号排列三个玩家牌的序号
        Collections.sort(user1);
        Collections.sort(user2);
        Collections.sort(user3);

        //按照从大到小的顺序打印出三个玩家手中的牌
        System.out.println("第一个玩家手中的牌为：");
        for(int i=0;i<18;i++){
            System.out.println(m1.get(user1.get(i)));
        }
        System.out.println("第二个玩家手中的牌为：");
        for(int i=0;i<18;i++){
            System.out.println(m1.get(user2.get(i)));
        }
        System.out.println("第三个玩家手中的牌为：");
        for(int i=0;i<18;i++){
            System.out.println(m1.get(user3.get(i)));
        }

    }
}
